package com.ihunanren.biz.result;

import java.io.Serializable;
import java.util.Map;

public interface Result extends Serializable{

	 /** 在models表中代表默认的model的key。 */
    String DEFAULT_MODEL_KEY = "_defaultModel";
    /** 在errors中代表默认的error的key。*/
    String DEFAULT_ERROR_KEY = "_defaultError";

    /**
     * 请求是否成功。
     *
     * @return 如果成功，则返回<code>true</code>
     */
    boolean isSuccess();

    /**
     * 设置请求成功标志。
     *
     * @param success 成功标志
     */
    void setSuccess(boolean success);
    
    /**
     * 取得默认model对象的key。
     *
     * @return 默认model对象的key
     */
    String getDefaultModelKey();

    /**
     * 取得model对象。
     * 
     * <p>
     * 此调用相当于<code>getModels().get(getDefaultModelKey())</code>。
     * </p>
     *
     * @return model对象
     */
    Object getDefaultModel();

    /**
     * 设置model对象。
     * 
     * <p>
     * 此调用相当于<code>getModels().put(DEFAULT_MODEL_KEY, model)</code>。
     * </p>
     *
     * @param model model对象
     */
    void setDefaultModel(Object model);

    /**
     * 设置model对象。
     * 
     * <p>
     * 此调用相当于<code>getModels().put(key, model)</code>。
     * </p>
     *
     * @param key 字符串key
     * @param model model对象
     */
    void setDefaultModel(String key, Object model);

    /**
     * 取得所有model对象。
     *
     * @return model对象表
     */
    Map<String, Object> getModels();
    
    /**
     * 获取所有的错误列表
     * @return
     */
    Map<String, Object> getErrorMsgMap();
    
    /**
     * 设置错误列表
     * @param errorMap
     */
    void setErrorMsgMap(Map<String, Object> errorMap);
    /**
     * 设置一个错误
     * @param key
     * @param value
     */
    void setErrorMsg(String errorKey,Object errorMsg);
    /**
     * 获取默认的错误，针对一般只设置一个错误的情况
     * @return
     */
    Object getDefaultErrorMsg();
    /**
     * 设置默认的错误
     * @param errorMsg
     */
    void setDefaultErrorMsg(String errorMsg);
}